import pandas as pd

# 运营目录的数据处理
type_a = {
    '试卷快照ID':str,
    '原卷ID': str
}
type_b = {
    '试卷快照id':str,
}

# 加载文件
df1 = pd.read_excel('D:\\project_file\\老卷下线\\运营目录使用老卷标记.xlsx', dtype=type_a)
df2 = pd.read_excel('D:\\project_file\\老卷下线\\运营目录的试卷数据\\运营目录的试卷数据.xlsx', dtype=type_b )

# 先过滤文件2
filtered_df2 = df2[(df2['资源是否删除'] == 0) &
                   (df2['节点是否删除'] == 0) &
                   (df2['目录是否删除'] == 0)]

# 定义函数来检查每个行
def check_row(row):
    snapshot_id = str(row['试卷快照ID'])  # 确保是字符串
    # 查找过滤后的文件2中'试卷快照id'完全匹配snapshot_id的行
    matching = filtered_df2[filtered_df2['试卷快照id'].astype(str) == snapshot_id]
    if not matching.empty:
        use = '是'
        # 收集所有匹配的'目录名称'-'节点名称'，用逗号连接
        details = ','.join(matching.apply(lambda r: f"{r['目录名称']}——{r['节点名称']}", axis=1).unique())
    else:
        use = '否'
        details = ''
    return pd.Series({'运营目录使用': use, '运营目录使用详情': details})

# 应用函数到df1，添加新列
df1 = df1.join(df1.apply(check_row, axis=1))

# 保存修改后的文件1
df1.to_excel('运营目录使用老卷标记完成.xlsx', index=False)